#ifndef IBUNDLEACTIVATOR_H
#define IBUNDLEACTIVATOR_H


class IBundleActivator
{
public:
    IBundleActivator();
    virtual ~IBundleActivator();

    /**
     * Called when this plugin is started so the Framework can perform the
     * plugin-specific activities necessary to start this plugin. This method
     * can be used to register services or to allocate any resources that this
     * plugin needs.
     *
     * <p>
     * This method must complete and return to its caller in a timely manner.
     *
     * @param context The execution context of the plugin being started.
     * @throws std::exception If this method throws an exception, this
     *         plugin is marked as stopped and the Framework will remove this
     *         plugin's listeners, unregister all services registered by this
     *         plugin, and release all services used by this plugin.
     */
    virtual void start(BundleContext* context) = 0;

    /**
     * Called when this plugin is stopped so the Framework can perform the
     * plugin-specific activities necessary to stop the plugin. In general, this
     * method should undo the work that the <code>BundleActivator::start</code>
     * method started. There should be no active threads that were started by
     * this plugin when this plugin returns. A stopped plugin must not call any
     * Framework objects.
     *
     * <p>
     * This method must complete and return to its caller in a timely manner.
     *
     * @param context The execution context of the plugin being stopped.
     * @throws std::exception If this method throws an exception, the
     *         plugin is still marked as stopped, and the Framework will remove
     *         the plugin's listeners, unregister all services registered by the
     *         plugin, and release all services used by the plugin.
     */
    virtual void stop(BundleContext* context) = 0;

private:

};
#endif // IBUNDLEACTIVATOR_H
